package com.warren.beans.factory.config;

import com.warren.error.BeansException;

/**
 * @author warren
 * @create 2021-08-19 20:07
 * @Description  用于修改新实例化 Bean 对象的扩展点
 * 在Bean  对象实例化之后修改  Bean  对象，也可以替换  Bean  对象。
 */
public interface BeanPostProcessor {
    /**
     * 在 Bean 对象执行初始化方法之前，执行此方法
     *
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;

    /**
        * 在 Bean 对象执行初始化方法之后，执行此方法
     *
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
